Các thao tác và chuyển đổi kiểu dữ liệu trong JavaScript
← Quay lại trang chínhtypeof là toán tử dùng để kiểm tra kiểu dữ liệu của một biến hoặc giá trị.
console.log(typeof 123); // "number"
console.log(typeof "Hello"); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object" (đây là bug lịch sử)
console.log(typeof {}); // "object"
console.log(typeof []); // "object"
console.log(typeof function(){}); // "function"
toString() là method chuyển giá trị về dạng chuỗi. Hầu hết các kiểu dữ liệu trong JavaScript đều có phương thức toString().
123.toString() → "123"true.toString() → "true"[1,2,3].toString() → "1,2,3"{}.toString() → "[object Object]"function(){}.toString() → trả về source codenew Date().toString() → "Mon Jul 15 2025..."/abc/g.toString() → "/abc/g"null.toString() → TypeErrorundefined.toString() → TypeErrorGiải pháp: Sử dụng String(value) thay vì value.toString() để an toàn hơn.
// ✅ Number có toString()
const num = 123;
console.log(num.toString()); // "123"
console.log((42).toString()); // "42" (cần dấu ngoặc)
// ✅ Boolean có toString()
const bool = true;
console.log(bool.toString()); // "true"
console.log(false.toString()); // "false"
// ✅ Array có toString()
const arr = [1, 2, 3];
console.log(arr.toString()); // "1,2,3"
console.log([].toString()); // "" (chuỗi rỗng)
// ✅ Object có toString()
const obj = {name: "Long", age: 25};
console.log(obj.toString()); // "[object Object]"
// ✅ Function có toString()
function greet() { return "Hello"; }
console.log(greet.toString()); // "function greet() { return \"Hello\"; }"
// ✅ Date có toString()
const date = new Date();
console.log(date.toString()); // "Mon Jul 15 2025 10:30:00 GMT+0700"
// ⚠️ null và undefined KHÔNG có toString()
// console.log(null.toString()); // TypeError!
// console.log(undefined.toString()); // TypeError!
// 🔧 Giải pháp an toàn: dùng String()
console.log(String(null)); // "null"
console.log(String(undefined)); // "undefined"
value.toString(): Gọi method toString() của object (có thể lỗi với null/undefined)String(value): Chuyển đổi an toàn, không bao giờ lỗivalue + "": Cách nhanh để chuyển sang string (type coercion)JavaScript tự động chuyển đổi kiểu dữ liệu (type coercion) hoặc bạn có thể chuyển đổi thủ công:
// Chuyển sang số
console.log(Number("123")); // 123
console.log(parseInt("456")); // 456
console.log(parseFloat("3.14")); // 3.14
// Chuyển sang chuỗi
console.log(String(789)); // "789"
// Chuyển sang boolean
console.log(Boolean(0)); // false
console.log(Boolean("Hello")); // true
// Tự động chuyển đổi khi so sánh
console.log("5" == 5); // true
console.log("5" === 5); // false
Destructuring là cú pháp giúp "giải nén" giá trị từ array hoặc object vào biến riêng biệt.
// Array destructuring
const arr = [1, 2, 3];
const [a, b, c] = arr;
console.log(a, b, c); // 1 2 3
// Object destructuring
const obj = {name: "Long", age: 25};
const {name, age} = obj;
console.log(name, age); // "Long" 25
// Đổi tên biến khi destructuring
const {name: fullName} = obj;
console.log(fullName); // "Long"
Bitwise là các phép toán thao tác trực tiếp trên các bit của số nguyên. JavaScript chuyển số về dạng 32-bit signed integer trước khi thực hiện phép toán bitwise.
Mỗi số được biểu diễn bằng các bit (0 hoặc 1). Ví dụ:
101 (binary) = 1×2² + 0×2¹ + 1×2⁰011 (binary) = 0×2² + 1×2¹ + 1×2⁰111 (binary) = 1×2² + 1×2¹ + 1×2⁰Trả về 1 nếu cả hai bit đều là 1
Trả về 1 nếu ít nhất một bit là 1
Trả về 1 nếu chỉ một bit là 1
Đảo ngược tất cả bit (0→1, 1→0)
Dịch tất cả bit sang trái n vị trí, thêm 0 vào bên phải
Dịch bit sang phải (chia cho 2ⁿ)
Left Shift dịch chuyển tất cả các bit sang trái một số vị trí nhất định và điền số 0 vào các vị trí trống bên phải.
| Số gốc | Phép toán | Binary trước | Binary sau | Kết quả |
|---|---|---|---|---|
| 3 | 3 << 1 | 011 | 110 | 6 |
| 7 | 7 << 2 | 0111 | 11100 | 28 |
| 1 | 1 << 4 | 0001 | 10000 | 16 |
| Phép toán thông thường: | x * 8 | (chậm hơn) |
| Left shift: | x << 3 | (nhanh hơn) |
| Kết quả: | Giống nhau | (với lũy thừa của 2) |